#ifndef _WOLV_SDK_CHARSET_HPP_
#define _WOLV_SDK_CHARSET_HPP_
/*
	Filename: charset.hpp
	Date: 2010-04-29
	Auther: Wolfhead <wolfhead87@gmail.com>
*/
#include <string>

namespace sdo
{

	template<class CharType>
	struct charset_traits
	{
	};

	template<>
	struct charset_traits<char>
	{
		typedef char			value_type;
		typedef char*			pinter_type;
		typedef const char*		const_pointer_type;
		typedef char&			reference_type;
		typedef std::string		string_type;
	};

	template<>
	struct charset_traits<wchar_t>
	{
		typedef wchar_t			value_type;
		typedef wchar_t*		pinter_type;
		typedef const wchar_t*	const_pointer_type;
		typedef wchar_t&		reference_type;
		typedef std::wstring	string_type;
	};

	template<class charType>
	struct charset
	{
		typedef typename charset_traits<charType> traits;
	};

	struct utf8			: virtual charset<char>{};
	struct unicode		: virtual charset<wchar_t>{};
	struct ascii		: virtual charset<char>{};
	struct urlencode	: virtual charset<char>{};




}

#endif // #ifndef _WOLV_SDK_CHARSET_HPP_